package com.gopay.common.domain.cps.transfer;

import java.math.BigDecimal;

import com.gopay.common.constants.approval.DecisionValue;
import com.gopay.common.constants.trans.PayBankOpType;
import com.gopay.common.domain.BaseEntity;
import com.gopay.common.domain.bank.BcdlMessage;

/**
 * 付款到银行请求数据
 * @PayBankVO.java
 * @author HJY
 * @2013-1-21 上午10:12:29  www.gopay.com.cn Inc.All rights reserved.
 */
public class Tran00700VO extends BaseEntity {

    private static final long serialVersionUID = 1L;
    
    public static final String MAPKEY_PAYORDER = "payOrder";
    public static final String MAPKEY_BANKLIST = "banklist";
    public static final String ADD_PAYEE_FLAG = "1";//加入收款人
    
    public static BigDecimal LIMIT_MONEY = new BigDecimal("9999999999.99");//最大金额
    /**
     * 申请人id
     */
    private String userId;
    /**
     * 付款方账号
     */
    private String acctId;
    
    /**
     * 付款金额
     */
    private BigDecimal txnAmt;
    
    /**
     * 国付宝订单号（申请为空）
     */
    private String gopayOrderId;
    /**
     * 支付密码（仅企业财务审核）
     */
    private String payPwd;
    
    /**
     * 操作类型：申请、申请确认、审核  PayBankOpType
     */
    private PayBankOpType opType;
    
    /**
     * 付款账户类型
     */
    private String bcFlag;
    
    /**
     * 备注信息
     */
    private String remark;
    /**
     * 审批结果 DecisionValue
     * 申请确认、财务人员审核、国付宝审核
     */
    private DecisionValue decision;
    
    /**
     * 审批描述
     */
    private String decisionMsg;
    
    /**
     * 付款人银行信息
     */
    private BankPayeeVO bank;
    
    
    /**
     * 值为1 添加到收款人
     */
    private String payeeFlag;
    
    /**
     * 发起人客户ID
     */
    private String payCustId;
    
    
    /**
     * 是否线下支付
     */
    private boolean isOffPay;
    
    /**
     * 线下付款银行代码
     */
    private String offLineBankCode;
    
    /**
     * 线下付款银行订单号
     */
    private String offLineBankOrderNum;
    
    /**
     * 银企直联
     */
    private BcdlMessage bcdl;
    private String clientIp;
    private String sessionId;
    
    private int resultCode;
    private String resultMsg;
    
    /**
     * 自动结算的节假日白名单规则ID
     */
    private String ruleId;
    
    /**
     * 是否自动结算转线下
     */
    private boolean isAuto2Offline = false;

    /**
     * 是否T+1优化
     */
    private Integer isOptimizingSettle;

    
    /**
     * 手续费
     */
    private BigDecimal feeAmt;
    
    /**
     * 结算周期类型 00- T+N 第n个交易日结算;01- D+N 每日结算
     */
    private String settlementType;
    
    /**
     * 结算操作类型 01 手工，02 实时，03 自动
     */
    private String settlementOperationType;
    
    private String needRefund;

    /**
     * 账户类型
     * 11 对公非存折
     *  12 对公存折
     *  21 对私个人银行借记
     *  22 对私个人银行贷记
     * 23 对私个人银行准贷记
     *  24 对私存折
     */
    private String acctType;
    
    public BigDecimal getTxnAmt() {
        return txnAmt;
    }

    public void setTxnAmt(BigDecimal txnAmt) {
        this.txnAmt = txnAmt;
    }

    public String getGopayOrderId() {
        return gopayOrderId;
    }

    public void setGopayOrderId(String gopayOrderId) {
        this.gopayOrderId = gopayOrderId;
    }

    public String getPayPwd() {
        return payPwd;
    }

    public void setPayPwd(String payPwd) {
        this.payPwd = payPwd;
    }

    public PayBankOpType getOpType() {
        return opType;
    }

    public void setOpType(PayBankOpType opType) {
        this.opType = opType;
    }

    public String getBcFlag() {
        return bcFlag;
    }

    public void setBcFlag(String bcFlag) {
        this.bcFlag = bcFlag;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public DecisionValue getDecision() {
        return decision;
    }

    public void setDecision(DecisionValue decision) {
        this.decision = decision;
    }

    public String getDecisionMsg() {
        return decisionMsg;
    }

    public void setDecisionMsg(String decisionMsg) {
        this.decisionMsg = decisionMsg;
    }

    public BankPayeeVO getBank() {
        return bank;
    }

    public void setBank(BankPayeeVO bank) {
        this.bank = bank;
    }
    public String getAcctId() {
        return acctId;
    }
    public void setAcctId(String acctId) {
        this.acctId = acctId;
    }
    public void setPayeeFlag(String payeeFlag) {
        this.payeeFlag = payeeFlag;
    }
    public String getPayeeFlag() {
        return payeeFlag;
    }

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getPayCustId() {
        return payCustId;
    }

    public void setPayCustId(String payCustId) {
        this.payCustId = payCustId;
    }

	public boolean isOffPay() {
		return isOffPay;
	}

	public void setOffPay(boolean isOffPay) {
		this.isOffPay = isOffPay;
	}

	public String getOffLineBankCode() {
		return offLineBankCode;
	}

	public void setOffLineBankCode(String offLineBankCode) {
		this.offLineBankCode = offLineBankCode;
	}

	public String getOffLineBankOrderNum() {
		return offLineBankOrderNum;
	}

	public void setOffLineBankOrderNum(String offLineBankOrderNum) {
		this.offLineBankOrderNum = offLineBankOrderNum;
	}

	public BcdlMessage getBcdl() {
		return bcdl;
	}

	public void setBcdl(BcdlMessage bcdl) {
		this.bcdl = bcdl;
	}

	public String getClientIp() {
		return clientIp;
	}

	public void setClientIp(String clientIp) {
		this.clientIp = clientIp;
	}

	public String getSessionId() {
		return sessionId;
	}

	public void setSessionId(String sessionId) {
		this.sessionId = sessionId;
	}

    public String getRuleId() {
        return ruleId;
    }

    public void setRuleId(String ruleId) {
        this.ruleId = ruleId;
    }

	public int getResultCode() {
		return resultCode;
	}

	public void setResultCode(int resultCode) {
		this.resultCode = resultCode;
	}

	public String getResultMsg() {
		return resultMsg;
	}

	public void setResultMsg(String resultMsg) {
		this.resultMsg = resultMsg;
	}

	public boolean isAuto2Offline() {
		return isAuto2Offline;
	}

	public void setAuto2Offline(boolean isAuto2Offline) {
		this.isAuto2Offline = isAuto2Offline;
	}

	public Integer getIsOptimizingSettle() {
		return isOptimizingSettle;
	}

	public void setIsOptimizingSettle(Integer isOptimizingSettle) {
		this.isOptimizingSettle = isOptimizingSettle;
	}

	public BigDecimal getFeeAmt() {
		return feeAmt;
	}

	public void setFeeAmt(BigDecimal bigDecimal) {
		this.feeAmt = bigDecimal;
	}

	public String getNeedRefund() {
		return needRefund;
	}

	public void setNeedRefund(String needRefund) {
		this.needRefund = needRefund;
	}
	
	public String getSettlementType() {
		return settlementType;
	}

	public void setSettlementType(String settlementType) {
		this.settlementType = settlementType;
	}

	public String getSettlementOperationType() {
		return settlementOperationType;
	}

	public void setSettlementOperationType(String settlementOperationType) {
		this.settlementOperationType = settlementOperationType;
	}

    public String getAcctType() {
        return acctType;
    }

    public void setAcctType(String acctType) {
        this.acctType = acctType;
    }
}
